Function.prototype.apply1 = function(context, argsArr) {
  context = context ? Object(context) : context
  context.fn = this
  var result = context.fn(...argsArr)
  delete context.fn
  return result
}

function Product(name, price) {
  this.name = name
  this.price = price
}

function Food(name, price) {
  Product.apply1(this, [name, price])
}

console.log(new Food('cheese', 100).name)